/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.foxinline.manager.criar;

import br.com.foxinline.enums.DiasSemana;
import br.com.foxinline.modelo.Horario;
import br.com.foxinline.modelo.ItemHorario;
import br.com.foxinline.servico.HorarioServico;
import br.com.foxinline.utilitario.Msg;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.SelectItem;

/**
 *
 * @author laverson
 */
@ViewScoped
@ManagedBean
public class ManagerCriarHorario implements Serializable {

    @EJB
    HorarioServico horarioServico;
    private Horario horario;
    private List<ItemHorario> itemHorarios;
    private List<DiasSemana> diasSemanasSelecionadas;
    private Date data;

    @PostConstruct
    public void init() {
        horario = new Horario();
        data = null;
        diasSemanasSelecionadas = new ArrayList<DiasSemana>();
    }

    public void salvar() {
        try {
            
            itemHorarios = new ArrayList<ItemHorario>();

            for (DiasSemana dia : diasSemanasSelecionadas) {
                itemHorarios.add(new ItemHorario(data, dia));
            }

            horario.setItemHorario(itemHorarios);
            
            if (!horarioServico.existeHorario(horario)) {
                horarioServico.salvar(horario);
                Msg.messagemInfo(Msg.SuccessFull);
                init();
            } else {
                Msg.messagemError("Já existe um horário cadastrado conflitando com este novo horário !");
            }
        } catch (Exception e) {
            e.printStackTrace();
            Msg.messagemError(Msg.Failure);
        }
    }

    public List<SelectItem> getDiasSemana() {
        List<SelectItem> items = new ArrayList<SelectItem>();
        for (DiasSemana tipo : DiasSemana.values()) {
            items.add(new SelectItem(tipo, tipo.getSigla()));
        }
        return items;
    }

    public Horario getHorario() {
        return horario;
    }

    public void setHorario(Horario horario) {
        this.horario = horario;
    }

    public List<DiasSemana> getDiasSemanasSelecionadas() {
        return diasSemanasSelecionadas;
    }

    public void setDiasSemanasSelecionadas(List<DiasSemana> diasSemanasSelecionadas) {
        this.diasSemanasSelecionadas = diasSemanasSelecionadas;
    }

    public Date getData() {
        return data;
    }

    public void setData(Date data) {
        this.data = data;
    }

    public List<ItemHorario> getItemHorarios() {
        return itemHorarios;
    }

    public void setItemHorarios(List<ItemHorario> itemHorarios) {
        this.itemHorarios = itemHorarios;
    }
}